For many applications, such as robotics, vehicle navigation, computer game applications, medical applications and other problem domains, it is valuable to be able to find orientation and position of a camera as it moves in a known environment. Orientation and position of a camera is known as camera pose and may comprise six degrees of freedom (three of translation and three of rotation). Where a camera is fixed and an object moves relative to the camera it is also useful to be able to compute the pose of the object.
A previous approach uses keyframe matching where a whole test image is matched against exemplar training images (keyframes). K matching keyframes are found, and the poses (keyposes) of those keyframes are interpolated to generate an output camera pose. Keyframe matching tends to be very approximate in the pose result.
Another previous approach uses keypoint matching where a sparse set of interest points are detected in a test image and matched using keypoint descriptors to a known database of descriptors. Given a putative set of matches, a robust optimization is run to find the camera pose for which the largest number of those matches are consistent geometrically. Keypoint matching struggles in situations where too few keypoints are detected.
Existing approaches are limited in accuracy, robustness and speed.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known systems for finding camera or object pose.